// "use strict";
// const mvc = require('cosjs.mvc');
// /**
//  * @name pvp
//  * pvp相关
//  */

// //数据
// //1:判断jjc的所有类型
// //pvp的  使用的物品ID
// //刷新的花费ID
// //免费刷新次数是自动回复还是每日限定？

// /**
//  * @name setupPvpTeam
//  * @param string teamListID 队伍ID
//  * 修改防守阵容
//  */
// exports.setupPvpTeam = async function () {
//     let teamListID = this.get('teamListID', 'string');
//     if (!teamListID) {
//         return this.quick_error('M2saghge140', ' 参数错误');
//     }
//     this.updater.role.key("team." + teamListID);
//     await this.updater.data();
//     let teamData = this.updater.role.get("team." + teamListID);
//     if (!teamData) {
//         return this.quick_error("M2saghge40", "队伍数据不存在", teamListID);
//     }
//     this.updater.role.set("pvp.defend", teamListID);
//     return this.updater.save()
// }


// /**
//  * @name refresh
//  * @param int seasonID 赛季ID
//  * 手动刷新
//  */
// exports.refresh = async function () {
//     let seasonID = this.get('seasonID', 'int');
//     if (!seasonID) {
//         return this.error('args empty');
//     }
//     //判断赛季是否开放
//     const seasonConfig = this.config("arenaSeason", seasonID);
//     if (!seasonConfig) {
//         return this.quick_error("M2saghge40", "竞技场赛季数据不存在", seasonID);
//     }

//     const beginTIme = new Date(seasonConfig.seasonStart).getTime();
//     const endTIme = new Date(seasonConfig.seasonEnd).getTime();
//     if (this.updater.time < beginTIme || this.updater.time > endTIme) {
//         return this.quick_error("M2saghge40", "竞技场赛季未开放", seasonID);
//     }
//     let arenaConfig = this.config('arenaConfig', seasonConfig.arenaData);
//     if (!arenaConfig) {
//         return this.quick_error("M2saghge40", "竞技场数据不存在", seasonID);
//     }

//     // let arenaConfig = this.config('arenaConfig',seasonID);
//     // if (!arenaConfig) {
//     //     return this.quick_error("M2saghge40", "竞技场数据不存在", seasonID);
//     // }
//     //refreshItem
//     let ty = this.updater.item.types(arenaConfig['refreshItem']);
//     this.updater.item.key(ty._id);
//     await this.updater.data();
//     //扣除次数
//     // let freeCost = this.updater.item.get(ty._id);
//     // if(!freeCost){

//     // }else{
//     //     this.updater.sub(arenaConfig['refreshItem'],1);
//     // }
//     this.updater.sub(arenaConfig['refreshItem'], 1);
//     await this.updater.save();
//     return this.library('ladder/getPlayer');
// }


// /**
//  * @name startBattle
//  * @param int seasonID 赛季ID
//  * @param string uid 对手ID
//  * @tip 主线通关记录在role.stage里
//  * 创建pvp战斗
//  */
// exports.startBattle = async function () {
//     let id = this.get('uid', 'string');
//     if (!id) {
//         return this.quick_error('N2BS1', "参数缺失");
//     }
//     let seasonID = this.get('seasonID', 'string');
//     if (!seasonID) {
//         return this.quick_error('N2BS1', "参数缺失");
//     }
//     //判断赛季是否开放
//     const seasonConfig = this.config("arenaSeason", seasonID);
//     if (!seasonConfig) {
//         return this.quick_error("M2saghge40", "竞技场赛季数据不存在", seasonID);
//     }
//     let battleData = { "battleUid": id, "flag": false, "arenaDataID": seasonConfig.arenaData }
//     let battleCache = this.model.redis("battleCache", this.sid);
//     const beginTIme = new Date(seasonConfig.seasonStart).getTime();
//     const endTIme = new Date(seasonConfig.seasonEnd).getTime();
//     if (this.updater.time < beginTIme || this.updater.time > endTIme) {
//         return this.quick_error("M2saghge40", "竞技场赛季未开放", seasonID);
//     }
//     let arenaConfig = this.config('arenaConfig', seasonConfig.arenaData);
//     if (!arenaConfig) {
//         return this.quick_error("M2saghge40", "竞技场数据不存在", seasonID);
//     }
//     let ty = this.updater.item.types(arenaConfig['battleItem']);
//     this.updater.item.key(ty._id);
//     this.updater.role.key('pvp.ID');
//     // this.updater.role.key("pvp");
//     await this.updater.data();

//     await this.updater.data();
//     let seasonIDBase = this.updater.role.get('pvp.ID') || 0;
//     if (seasonID == 0 || seasonID != seasonIDBase) {
//         this.updater.role.set("pvp.ID", seasonID);
//     }

//     //扣除次数
//     this.updater.sub(arenaConfig['battleItem'], 1);
//     await this.updater.save();
//     // let playerRedis = this.model.redis("sort",this.sid,"PvP_3V3_Sort");
//     //判断对手是否正确
//     let playerRedis = this.model.redis("ladder/player", this.sid);
//     let playerList = await playerRedis.get(this.uid);
//     let flag = 0;
//     let key = '';
//     for (let k in playerList) {
//         if (playerList[k].uid == id && playerList[k].flag == 0) {
//             flag = 1;
//             key = k;
//             break;
//         }
//     }
//     if (!flag) {
//         return this.quick_error('N2BS1', "无法挑战对手");
//     }
//     //设置对手
//     playerList[key].flag = 1;
//     await playerRedis.set(this.uid, key, playerList[key]);

//     //创建战斗数据
//     let ttl = 1 * 24 * 3600 //有效期1天
//     await battleCache.set("PVP:" + this.uid, battleData, ttl)
//     return;
// }

// /**
//  * @name endBattle
//  * @param int result 是否胜利
//  * 结束战斗
//  */
// exports.endBattle = async function () {
//     let res = this.get('result', 'int') || 0;
//     let battleCache = this.model.redis("battleCache", this.sid);
//     let redisData = await battleCache.get("PVP:" + this.uid);
//     // if(redisData == null){
//     //     return {"win":false};
//     // }
//     // await battleCache.del("PVP:"+this.uid);

//     let arenaConfig = this.config('arenaConfig', redisData.arenaDataID);
//     if (!arenaConfig) {
//         return this.quick_error("M2saghge40", "竞技场数据不存在", seasonID);
//     }
//     let playerRedis = this.model.redis("ladder/player", this.sid);
//     let playerList = await playerRedis.get(this.uid);
//     let key = '';
//     for (let k in playerList) {
//         if (playerList[k].uid == redisData.battleUid && playerList[k].flag < 2) {
//             key = k;
//             break;
//         }
//     }
//     if (key == '') {
//         return this.quick_error('N2BS1', "战斗已经结算过了");
//     }
//     this.updater.record.add(34, 1);
//     this.updater.daily.add("record.34", 1);
//     if (res == 0) {
//         //失败
//         let ret1 = await this.library("rank/update3V3", this.uid, 10);
//         this.updater.role.set("pvp.score", parseInt(ret1 - 10));
//         let playerRedisSort = this.model.redis("sort", this.sid, "PvP_3V3_Sort");
//         let rank = await playerRedisSort.get(this.uid);
//         this.updater.role.set("pvp.rank", parseInt(rank));
//         // await this.updater.save();
//         playerList[key].flag = 1;
//         await playerRedis.set(this.uid, key, playerList[key]);
//         //还要给对手发送防守成功奖励邮件
//         let mail = this.model.mongo('mail', this.sid);
//         let data = { "title": "防守成功邮件", "content": "防守成功邮件内容" };
//         //给防守成功的奖励
//         // if(attr && attr.indexOf(',') > 0){
//         data['attr'] = '1,' + arenaConfig.winItem + ',1';
//         // }
//         //判断是不是机器人，机器人不用发
//         //判断每日获取防守奖励的上限，这个写到redis里面

//         mail.add(redisData.battleUid, data);
//         if (arenaConfig.loseItem) {
//             let { err, ret } = this.updater.item.group(arenaConfig.loseItem, 1);
//             if (err) {
//                 return this.error(err, ret);
//             }
//             await this.updater.save();
//             return { "playerList": playerList[key], "reward": ret }
//         } else {
//             return { "playerList": playerList[key], "reward": [] }
//         }

//         // return {"ret":playerList[key]}
//     } else {
//         let ret1 = await this.library("rank/update3V3", this.uid, 20);
//         this.updater.role.set("pvp.score", parseInt(ret1));
//         let playerRedisSort = this.model.redis("sort", this.sid, "PvP_3V3_Sort");
//         let rank = await playerRedisSort.get(this.uid);
//         this.updater.role.set("pvp.rank", parseInt(rank));
//         //计算段位，是否达到本赛季最高段位
//         this.updater.role.key('pvp.score');
//         this.updater.role.key('pvp.maxRank');
//         this.updater.role.key('pvp.maxScore');
//         await this.updater.data();
//         // let score=parseInt(ret)//this.updater.role.get('pvp.score');
//         //加分策略待定
//         // score+=20;
//         let maxRank = this.updater.role.get('pvp.maxRank');
//         if (maxRank < parseInt(rank)) {
//             this.updater.role.set("pvp.maxRank", parseInt(maxRank));
//             //判断是不是要领取本赛季最高段位

//         }

//         let maxScore = this.updater.role.get('pvp.maxScore');
//         if (maxScore < ret1) {
//             this.updater.record.max(35, parseInt(ret1));
//             this.updater.role.set("pvp.maxScore", parseInt(ret1));
//         }
//         if (arenaConfig.winItem) {
//             let { err, ret } = this.updater.item.group(arenaConfig.winItem, 1);
//             if (err) {
//                 return this.error(err, ret);
//             }
//             this.updater.record.add(55, 1);
//             await this.updater.save();
//             playerList[key].flag = 2;
//             await playerRedis.set(this.uid, key, playerList[key]);
//             return { "playerList": playerList[key], "reward": ret }
//         } else {
//             this.updater.record.add(55, 1);
//             await this.updater.save();
//             playerList[key].flag = 2;
//             await playerRedis.set(this.uid, key, playerList[key]);
//             return { "playerList": playerList[key], "reward": [] }
//         }
//     }


//     // let {err,reward} = this.updater.item.group(arenaConfig.winItem,1);
//     // if (err) {
//     //     return this.error(err, resultData);
//     // }
//     // this.updater.add(arenaConfig.winItem,1);
// }


// /**
//  * @name getRank
//  * @param string uid 对手ID
//  * 获取排名
//  */
// exports.getRank = async function () {
//     let id = this.get('uid', 'string');
//     if (!id) {
//         return this.quick_error('N2BS1', "参数缺失");
//     }
//     let playerRedisSort = this.model.redis("sort", this.sid, "PvP_3V3_Sort");
//     return playerRedisSort.get(id);
// }


// /**
//  * @name getDailyReward
//  * @param int seasonID 赛季ID
//  * 获取每日奖励
//  */
// exports.getDailyReward = async function () {
//     let seasonID = this.get('seasonID', 'string');
//     if (!seasonID) {
//         return this.quick_error('N2BS1', "参数缺失");
//     }
//     //判断赛季是否开放
//     const seasonConfig = this.config("arenaSeason", seasonID);
//     if (!seasonConfig) {
//         return this.quick_error("M2saghge40", "竞技场赛季数据不存在", seasonID);
//     }
//     const beginTIme = new Date(seasonConfig.seasonStart).getTime();
//     const endTIme = new Date(seasonConfig.seasonEnd).getTime();
//     if (this.updater.time < beginTIme || this.updater.time > endTIme) {
//         return this.quick_error("M2saghge40", "竞技场赛季未开放", seasonID);
//     }
//     //arenaRankConfig 奖励表
//     this.updater.role.key("pvp");
//     await this.updater.data();
//     let pvpData = this.updater.role.get("pvp");
//     if (!pvpData) {
//         return this.quick_error("M2saghge40", "数据不存在", pvpData);
//     }
//     const seasonRewardConfig = this.config("arenaRankConfig", seasonID);
//     if (!seasonRewardConfig) {
//         return this.quick_error("M2saghge40", "竞技场赛季奖励数据不存在", "arenaRankConfig", seasonID);
//     }
//     let score = pvpData.score;
//     let todayTime = this.library("time/today");
//     let today = this.library("time/sign", todayTime);
//     if (pvpData.daily >= today) {
//         return this.quick_error("M2saghge40", "今日奖励已领取", today);
//     }
//     for (let i in seasonRewardConfig.Coll) {
//         if (seasonRewardConfig.Coll[i].rankStart <= score && seasonRewardConfig.Coll[i].rankEnd > score) {
//             this.updater.add(seasonRewardConfig.Coll[i].dailyReward, 1);
//             this.updater.role.set("pvp.daily", today);
//             break;
//         }
//     }
//     return this.updater.save();
// }



// /**
//  * @name getWeekReward
//  * @param int seasonID 赛季ID
//  * 获取每周奖励
//  */
// exports.getWeekReward = async function () {
//     let seasonID = this.get('seasonID', 'string');
//     if (!seasonID) {
//         return this.quick_error('N2BS1', "参数缺失");
//     }
//     //判断赛季是否开放
//     const seasonConfig = this.config("arenaSeason", seasonID);
//     if (!seasonConfig) {
//         return this.quick_error("M2saghge40", "竞技场赛季数据不存在", seasonID);
//     }
//     const beginTIme = new Date(seasonConfig.seasonStart).getTime();
//     const endTIme = new Date(seasonConfig.seasonEnd).getTime();
//     if (this.updater.time < beginTIme || this.updater.time > endTIme) {
//         return this.quick_error("M2saghge40", "竞技场赛季未开放", seasonID);
//     }
//     //判断是否在周结算阶段
//     //arenaRankConfig 奖励表
//     this.updater.role.key("pvp");
//     await this.updater.data();
//     let pvpData = this.updater.role.get("pvp");
//     if (!pvpData) {
//         return this.quick_error("M2saghge40", "数据不存在", pvpData);
//     }
//     const seasonRewardConfig = this.config("arenaRankConfig", seasonID);
//     if (!seasonRewardConfig) {
//         return this.quick_error("M2saghge40", "竞技场赛季奖励数据不存在", "arenaRankConfig", seasonID);
//     }
//     let score = pvpData.score;
//     let weekTime = this.library("time/week");
//     let week = this.library("time/sign", weekTime);
//     if (pvpData.week >= week) {
//         return this.quick_error("M2saghge40", "周奖励已领取", week);
//     }
//     for (let i in seasonRewardConfig.Coll) {
//         if (seasonRewardConfig.Coll[i].rankStart <= score && seasonRewardConfig.Coll[i].rankEnd > score) {
//             this.updater.add(seasonRewardConfig.Coll[i].weeklyReward, 1);
//             this.updater.role.set("pvp.week", week);
//             if (seasonRewardConfig.Coll[i].rankDown != 0) {
//                 this.updater.role.set("pvp.score", seasonRewardConfig.Coll[i].rankDown);
//             }
//             break;
//         }
//     }
//     return this.updater.save();
// }





// /**
//  * @name getSeasonReward
//  * @param int seasonID 赛季ID
//  * 获取赛季奖励
//  */
// exports.getSeasonReward = async function () {
//     let seasonID = this.get('seasonID', 'string');
//     if (!seasonID) {
//         return this.quick_error('N2BS1', "参数缺失");
//     }
//     //判断赛季是否开放
//     const seasonConfig = this.config("arenaSeason", seasonID);
//     if (!seasonConfig) {
//         return this.quick_error("M2saghge40", "竞技场赛季数据不存在", seasonID);
//     }
//     const endTIme = new Date(seasonConfig.countEnd).getTime();
//     if (this.updater.time < endTIme) {
//         return this.quick_error("M2saghge40", "竞技场赛季未结算", seasonID);
//     }
//     //arenaRankConfig 奖励表
//     this.updater.role.key("pvp");
//     await this.updater.data();
//     let pvpData = this.updater.role.get("pvp");
//     if (!pvpData) {
//         return this.quick_error("M2saghge40", "数据不存在", pvpData);
//     }
//     const seasonRewardConfig = this.config("arenaRankConfig", seasonID);
//     if (!seasonRewardConfig) {
//         return this.quick_error("M2saghge40", "竞技场赛季奖励数据不存在", "arenaRankConfig", seasonID);
//     }
//     let score = pvpData.score;
//     if (pvpData.ID != seasonID) {
//         return this.quick_error("M2saghge40", "赛季奖励已领取", seasonID);
//     }
//     for (let i in seasonRewardConfig.Coll) {
//         if (seasonRewardConfig.Coll[i].rankStart <= score && seasonRewardConfig.Coll[i].rankEnd > score) {
//             this.updater.add(seasonRewardConfig.Coll[i].seasonReward, 1);
//             this.updater.role.set("pvpS", pvpData);
//             this.updater.role.set("pvp", { "ID": 0, "score": 0, "defend": 0, "daily": 0, "week": 0, "maxScore": 0, "maxRank": 0 });
//             break;
//         }
//     }
//     return this.updater.save();
// }
